<?php
session_start(); 

include ("utils.php");
//definicion de constantes globales
 $desdeRow = 8; //valor de la fila desde donde empieza a imprimir la tabla de resultados
 $desdeCol = 1; //valor de la columna desde donde empieza a imprimir la tabla de resultados, basandose en el array "$cols"
 $cols = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N'); //columnas para pasar a strin los valores integer... 0 es A, 1 es B...

function generateTableInObjectExel($objExcel, $consul, $iniCol, $iniRow, $viewCols, $sizeCols){
	// Seteamos Headers de tabla
	global $cols;
	global $BgColorColTitle, $FontColorColTitle, $BorderLightColor, $FontDataColor;
	$aCampos = array_keys($consul->CAMPOS); 
	$actualCol = $iniCol; 
	for ($i=0; $i<count($aCampos); $i++) {
	  if (($viewCols==NULL)||(($viewCols!=NULL)&&(in_array($i, $viewCols)))){
		$objExcel->getActiveSheet()->setCellValue($cols[$actualCol].$iniRow, $aCampos[$i]);
	    $objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getFill()->setFillType( PHPExcel_Style_Fill::FILL_SOLID );
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getFill()->setStartColor($BgColorColTitle);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getFont()->setBold(true);
    	$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getFont()->setColor($FontColorColTitle); 
	    $objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getFont()->setSize("10");
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getBottom()->setBorderStyle( PHPExcel_Style_Border::BORDER_THICK);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getBottom()->setColor($BorderLightColor);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getTop()->setBorderStyle( PHPExcel_Style_Border::BORDER_THICK);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getTop()->setColor($BorderLightColor);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getLeft()->setBorderStyle( PHPExcel_Style_Border::BORDER_THICK);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getLeft()->setColor($BorderLightColor);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getRight()->setBorderStyle( PHPExcel_Style_Border::BORDER_THICK);
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getBorders()->getRight()->setColor($BorderLightColor);
		if (($sizeCols==NULL)||($sizeCols[$actualCol]==-1))
			$objExcel->getActiveSheet()->getColumnDimension($cols[$actualCol])->setAutoSize(true);
	    else
			$objExcel->getActiveSheet()->getColumnDimension($cols[$actualCol])->setWidth($sizeCols[$actualCol-$iniCol]);					
		$objExcel->getActiveSheet()->getStyle($cols[$actualCol].$iniRow)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		$actualCol++;
		}
	}
	
	// Agregamos datos
	$row = $iniRow+1;
	for ($i=0; $i<$consul->cantidad(); $i++) {
	  $col = $iniCol;
	  for ($j=0; $j<count($aCampos); $j++) {
    	if (($viewCols==NULL)||(($viewCols!=NULL)&&(in_array($j, $viewCols)))){
			$objExcel->getActiveSheet()->setCellValue($cols[$col].$row, ReplaceChars($consul->campoPorPosicion($j, $i)));
			$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getFont()->setBold(false);
    		$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getFont()->setColor($FontDataColor); 
	    	$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getFont()->setSize("8");
			$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getBorders()->getBottom()->setBorderStyle( PHPExcel_Style_Border::BORDER_THIN);
			$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getBorders()->getBottom()->setColor($BorderLightColor);
			$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getBorders()->getLeft()->setBorderStyle( PHPExcel_Style_Border::BORDER_THIN);
			$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getBorders()->getLeft()->setColor($BorderLightColor);
			$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getBorders()->getRight()->setBorderStyle( PHPExcel_Style_Border::BORDER_THIN);
			$objExcel->getActiveSheet()->getStyle($cols[$col].$row)->getBorders()->getRight()->setColor($BorderLightColor);
			$col++;
			}			
		}
	  $row++;	
	}
}


if (isset($_SESSION['cliente']))
{
 // Error reporting 
//error_reporting(E_ALL);
 
// Include path 
ini_set('include_path', 'phpToExcelLib/');

// PHPExcel 
include ("phpToExcelLib/PHPExcel.php");
 
// Inclusion del Writer Deseado 
include ("phpToExcelLib/PHPExcel/Writer/HTML.php");

// Create new PHPExcel object
$objPHPExcel = new PHPExcel();

// Propiedades del documento
$objPHPExcel->getProperties()->setCreator("Bykom - MAPGUIDE WEB SITE");
$objPHPExcel->getProperties()->setLastModifiedBy("Bykom - MAPGUIDE WEB SITE");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX - MAPGUIDE WEB SITE REPORTS");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX - MAPGUIDE WEB SITE REPORTS");
$objPHPExcel->getProperties()->setDescription("Document for Office 2007 XLSX, generated using PHP classes.");

//seteamos la pagina activa del excel (la 0)
$objPHPExcel->setActiveSheetIndex(0);

// Definimos estilos
   //Define Colors Bg
    $BgColorSubTitle = new PHPExcel_Style_Color();
    $BgColorSubTitle->setRGB("E3E3E3");
	$BgColorColTitle = new PHPExcel_Style_Color();
    $BgColorColTitle->setRGB("000000");
   //Define Colors Font 
    $FontTitleColor = new PHPExcel_Style_Color();
	$FontTitleColor->setRGB("0000FF");
	$FontDataColor = new PHPExcel_Style_Color();
	$FontDataColor->setRGB("202020");
	$FontColorColTitle = new PHPExcel_Style_Color();
    $FontColorColTitle->setRGB("FFFFFF");
   //Define Colors Borders
    $BorderLightColor =	new PHPExcel_Style_Color();
	$BorderLightColor->setRGB("BEBEBE");

// GENERAMOS DATOS SEGUN tipoConsulta
 switch ($tipoConsulta)
      {      
       case "HistoricoAVL":
         $velocidadMax = $_REQUEST['velocidadMax'];
         $velocidadPromedio = $_REQUEST['velocidadPromedio'];
         $distanciaTotal = $_REQUEST['distanciaTotal'];
		 $views = array(6,8,14);
         $consulta=BykomCliente::Consulta_Historico_Avl_Total($cuenta,$fechai,$fechaf);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, NULL);
         break;	 
       case "Zonas":
         $consulta=BykomCliente::Consulta_Zonas_Total($cuenta,0,0);
		 $sizes = array (6, 15, 10, 20);
		 $views = array(0,1,2,3);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, $sizes);
         break;
       case "Usuarios":  
         $consulta=BykomCliente::Consulta_Usuarios_Total($cuenta,0,0); 
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow,NULL, NULL);
         break;
       case "Eventos":
         $consulta=BykomCliente::Consulta_Evento_Total($cuenta,$fechai,$fechaf,$limitacion,$tipo,0,0);
		 $sizes = array (20, 20, 10, 10);
		 $views = array(0,1,2,3);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, $sizes);  
         break;
       case "Contactos":  
         $consulta=BykomCliente::Consulta_Contactos_Total($cuenta,0,0); 
		 $sizes = array (20, 20, 10, 8, 8, 30);
		 $views = array(0,1,2,3);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, $sizes);
         break;
       case "Horarios":  
         $consulta=BykomCliente::HorariosCuenta($cuenta);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow,NULL, NULL);
		 $cantElements = $consulta->cantidad() + 2;
         $consulta=BykomCliente::HorariosCuenta_Ex($cuenta);
		 if ($consulta->cantidad()){
			 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow + $cantElements,NULL, NULL);
			 $cantElements += $consulta->cantidad() + 2;
			 }
         $consulta=BykomCliente::HorariosTolerancia($cuenta);
		 generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow + $cantElements, NULL, NULL);
         break;  
       case "Facturas":
      	$consulta = BykomCliente::getFacturasByCodigoCl($cuenta, 0, 2);
		$views = array(0,1,2,3);
		generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, NULL);
      	break;  
      case "EventosAVL":
	    $views = array(0,1,2,5);
      	$consulta = BykomCliente::Consulta_Historico_Eventos($cuenta,$fechai,$fechaf,$process);  
		$views = array(0,1,2,3);
		generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, NULL);
      	break;  	
	  case "ParadasAVL":
      	$consulta = BykomCliente::Consulta_Historico_Paradas($cuenta,$fechai,$fechaf,$tiempo);  
		$views = array(0,1,3);
		generateTableInObjectExel($objPHPExcel, $consulta, $desdeCol, $desdeRow, $views, NULL);
      	break;
      }

//Titulo de reporte
$objRichText = new PHPExcel_RichText( $objPHPExcel->getActiveSheet()->getCell('B2') );
$objRichText->createText('Reporte de '.$tipoConsulta);
$objPHPExcel->getActiveSheet()->mergeCells('B2:E2');

// Sub-Encabezado
$objPHPExcel->getActiveSheet()->setCellValue('B4', 'Filtro:');
$objPHPExcel->getActiveSheet()->setCellValue('B5', 'Cuenta:');
$objPHPExcel->getActiveSheet()->setCellValue('B6', 'Nombres:');
$objPHPExcel->getActiveSheet()->setCellValue('C4', $filtro);
$objPHPExcel->getActiveSheet()->setCellValue('C5', $codigocuenta);
$objPHPExcel->getActiveSheet()->setCellValue('C6', $nom1nom2);
$objPHPExcel->getActiveSheet()->mergeCells('C4:L4');
$objPHPExcel->getActiveSheet()->mergeCells('C5:L5');
$objPHPExcel->getActiveSheet()->mergeCells('C6:L6');
if ($tipoConsulta=="HistoricoAVL"){
	$objPHPExcel->getActiveSheet()->setCellValue('C7', "Velocidad Maxima: ".$velocidadMax."Km/h - Velocidad Promedio: ".$velocidadPromedio."Km/h - Distancia Total: ".$distanciaTotal."Km");
	$objPHPExcel->getActiveSheet()->mergeCells('C7:L7');
}

// Propiedades de pagina 
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

// Nombramos Pagina activa
$objPHPExcel->getActiveSheet()->setTitle('Pagina de reporte');
 
// Aplicamos estilos
   //Backgrounds
   $objPHPExcel->getActiveSheet()->getStyle("B4")->getFill()->setFillType( PHPExcel_Style_Fill::FILL_SOLID );
   $objPHPExcel->getActiveSheet()->getStyle("B4")->getFill()->setStartColor($BgColorSubTitle);
     
   //Fonts Styles
   $objPHPExcel->getActiveSheet()->getStyle("B2")->getFont()->setBold(true);
   $objPHPExcel->getActiveSheet()->getStyle("B2")->getFont()->setColor($FontTitleColor);
   $objPHPExcel->getActiveSheet()->getStyle("B2")->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
   $objPHPExcel->getActiveSheet()->getStyle("B2")->getFont()->setSize("12");
   $objPHPExcel->getActiveSheet()->getStyle("C4")->getFont()->setBold(false);
   $objPHPExcel->getActiveSheet()->getStyle("C4")->getFont()->setColor($FontDataColor); 
   $objPHPExcel->getActiveSheet()->getStyle("C4")->getFont()->setSize("8");

   //Design Borders	
   $objPHPExcel->getActiveSheet()->getStyle("B4")->getBorders()->getBottom()->setBorderStyle( PHPExcel_Style_Border::BORDER_THICK);
   $objPHPExcel->getActiveSheet()->getStyle("B4")->getBorders()->getBottom()->setColor($BorderLightColor);
   
   //Set alignments
   
   // Duplicamos estilos para no repetir tanto codigo
   $objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle("B4"), "B5:B6");
   $objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle("C4"), "C5:C6");

// Imagen del encabezado
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath("./imagenes/logo.png");
$objDrawing->setHeight(85);
$objDrawing->setCoordinates('B1');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());	

	
// Definimos Dimensiones de Columnas
//$objPHPExcel->getActiveSheet()->getRowDimension('1')->setHeight(40);
//$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
	
		
// Output Excel file
$objWriter = new PHPExcel_Writer_Html($objPHPExcel);
//$objWriter->save(str_replace('.php', '.xls', $_REQUEST['nom1nom2'].time().".xls"));
$objWriter->save("php://output"); 
}    
?>
<script>
   print(); 
</script>